package com.example.spring.test;

import java.util.concurrent.locks.ReentrantLock;

public class FairorNofairLock {

    public static void main(String[] args) {

        final Service service = new Service(false);

        Runnable runnable = new Runnable() {

            @Override
            public void run() {
                System.out.println("★线程" + Thread.currentThread().getName()
                        + "运行了");
                service.serviceMethod();
            }
        };

        Thread[] threadArray = new Thread[10];
        for (int i = 0; i < 10; i++) {
            threadArray[i] = new Thread(runnable);
            threadArray[i].start();
        }
    }

    static public class Service {
        private ReentrantLock lock;

        public Service(Boolean isFair) {
            lock = new ReentrantLock(isFair);
        }

        public void serviceMethod() {
            lock.lock();
            try {
                System.out.println("ThreadName=" + Thread.currentThread().getName()
                        + "获得锁定");
            } finally {
                lock.unlock();
            }
        }
    }


}
